
; Macros de convencion C

%macro Entrar 0
	push ebp
	mov ebp,esp
	sub esp, 4
	push esi
	push edi
	push ebx
%endmacro

%macro Salir 0
	pop ebx
	pop edi
	pop esi
	add esp, 4
	pop ebp
	ret
%endmacro

; Macro que inicializa los contadores y punteros
; para recorrer la imagen

%macro init 0
	mov eax, W
	sub eax, 2
	xor edx, edx
	mov ebx, 14
	div ebx				; eax = (W-2)/14	edx = (W-2)%14
	sub ebx, edx		; ebx = 14 - (W-2)%14
	mov ecx, H
	dec ecx
	dec ecx
	mov edx, W

	mov esi, SRC
	mov edi, DST
	add edi,edx
%endmacro

; toma como parametro el nombre de la macro del filtro


; Macro que representa a todos los loops menos roberts
%macro convolucion 1
	.fori:

		push ecx
		mov ecx, eax

		.forj:

			%1

		dec ecx
		jnz .forj

		; acomodo las lineas y calculo el final

		sub esi, ebx
		sub edi, ebx
		%1

		pop ecx
		lea esi, [esi+2]
		lea edi, [edi+2]

	dec ecx
	jnz .fori
%endmacro
